
setTimeout(()=>{
    console.log('ok1')
},1000)
setTimeout(()=>{
    console.log('ok2')
},2000)
setTimeout(()=>{
    console.log('ok3')
},3000)

while(true){
    
}
console.log(100);

// 1.执行js脚本就是一个宏任务 
// 2.调用webApi 如果成功后会将回调放到我们的宏任务队列中
// 3.每次执行宏任务的时候 都会创造一个微任务队列  （宏任务整个过程中只有一个 微任务队列每次执行的时候都会产生一个）
// 4.每次会清空微任务 ， 清空后会在宏任务中取出一个执行, 直到全部执行完毕 (微任务中创建微任务是放在当前微任务队列的最后)

// 同一时间内 大量操作dom 会被合并成一个 一起渲染 （布局抖动）
// 每循环一次会执行一个宏任务，并清空对应的微任务队列，每次事件循环完毕后会判断页面是否需要重新渲染 （大约16.6ms会渲染一次）

// 分成两个队列的目的就是为了区分执行时机 

// 所有的异步任务 都是 每次清空微任务，在去取一个宏任务